const crypto = require('crypto');
const { _publicKey, _priKey } = require('./keys');
const NodeRSA = require("node-rsa")//引入node-rsa，解密使用

/**
   * 使用公钥进行加密
   * @param {String} data 
   * @param {String} _publicKey 
   * @return {String} 加密后的密文
   */
function publicKeyEncrypt(data) {
  return crypto.publicEncrypt(_publicKey, Buffer.from(data)).toString('base64')
}

const entry = '123456'
// // 例子：加密数据
const encryptedData = publicKeyEncrypt(JSON.stringify(entry));
console.log('123456加密：',encryptedData)

/**
 * 使用私钥进行解密
 * @param {String} encryptedData 
 * @param {String} _priKey 
 * @return {String} 解密后的明文
 */
function privateKeyDecrypt(encryptedData) {
  return crypto.privateDecrypt(_priKey, Buffer.from(encryptedData, 'base64')).toString();
}
// 例子：解密数据
const originData = privateKeyDecrypt(encryptedData);
// 打印用私钥解密后的数据
console.log('解密123456：',originData);

// 解密范例
const privateKey = new NodeRSA(_priKey) // 使用node-rsa
privateKey.setOptions({ encryptionScheme: "pkcs1" }) // 因为vue中使用jsencrypt，jsencrypt自身使用的是pkcs1加密方案, nodejs需要修改成pkcs1
var password = privateKey.decrypt(encryptedData, "utf8")
console.log('rsa解密：',password)

module.exports = { publicKeyEncrypt, privateKeyDecrypt }